什麼是函數?
函數就是一個功能~
在寫程式時,相同或類似邏輯的程式碼如果很常使用,那麼一直重複寫一樣的程式碼,一直複製貼上很沒有效率,函數就是將這些常用邏輯的程式碼獨立成一個個的個體,方便重複使用,達到減少程式碼檔案大小、增加可讀性、加快開發速度的功用。
is_float()、isset()、unset()、count()、mt_rand() 等都是函數,PHP內建的函數超過上千個,當然不太可能所有都用得到,有些也功能相近或是可以替代,寫法不同而已,通常
我們要用的時候再去找,只要記得幾個常用的就好,或是沒有你想要功能的函數,那麼就自己寫一個來自訂函數,但大部份的時候,能夠調用現成的函數幫我們實現功能上的需求。
在PHP中,函數名稱的命名有規範,不過跟之前介紹過的跟常數、變數的命名規則一樣,基本命名規則已經有介紹過,這邊再來幫大家複習一次~~~
PS.在同樣的變數作用域(Scope)中,函數名稱、變數名稱、常數名稱不可以完全相同,必須是唯一的(不能出現同樣名稱的函數變數常數)
所以我們把函數加上參數,讓程式碼能給函數添加更多的功能,參數類似變量。
具有return語句的函數就是有返回值的函數
沒有return的語句就是執行過程函數
今天程式計算完之後,要存進資料庫裡面,所以需要在函數的最後一行加上回傳值(return) 讓函數將計算完成後回傳.給其他程式碼去寫入資料庫,讓函數返回一個值。
基本格式:
function 函數名(參數){
PHP語句 (函數體)
}
強型別語言中,型別約束是語法上的要求(定義一個變數的時候,必須指定其型別,並且以後該變數也只能儲存該型別資料)。
這是比較複雜的格式:
function 函數名稱(型別1 參數1 = 預設值1,型別2 參數2 = 預設值2,....):回傳值型別{
//函數也可以沒有回傳值型別,就把「:回傳值型別」的部分去掉即可
函數內容;
return 回傳值;//函數也可以不回傳任何值,沒有回傳值那就沒有這行
}
<?php
//全局變量
//在函數的外部定義一個變量
$str = 'HI~~ 你好臉熟,我們認識嗎?';
//定義一個函數
function sayHi()
{
//在函數內部使用global關鍵字聲明一個與外部同名的變量
global $str;
echo $str;
//嘗試改變$str的值
$str = ' 神經病嗎你???? ';
}
echo '這是第一個在函數外部輸出:' . $str;
echo '<hr/>';
echo '這是在函數內部輸出' . sayHi();
echo '<hr/>';
echo '這是第二個在函數外部輸出:' . $str;
echo '<hr/>';
$str = '我是你的夢魘';
sayHi();
echo '<hr/>';
function str()
{
//局部變量
$name = 'Winnie';
global $name;
echo $name;
}
$name = 'Bear';
str();
echo '<hr/>';
var_dump($name);
在函數內部使用static聲明的變量就是靜態變量
<?php
//靜態變量 統計函數調用的次數
function addNum()
{
//靜態變量 只會被初始化一次
static $a = 1;
echo $a . '<br/>';
$a++;
}
addNum(); //1
addNum(); //2
addNum(); //3